/*
 * I2C_Functions.h
 *
 * Created  : 9 November 2020
 * Modified : 6 May 2021
 * Author   : HWanyusof
 * Version	: 1.0
 */

#pragma once

#include <stdio.h>
#include <stdlib.h>
#include "typedefinition.h"
#include "stm32f4xx_hal.h"


//Struct TransferData Member Definition
struct TransferData
{
	uint8_t RegisterAddress;
	uint8_t WData[2];
	uint8_t RData[2];
	uint8_t length;
	uint8_t Slave_Address;
	uint8_t Select_I2C_Bus;
}; //Struct variables will be declared separately in Sensor API and I2C_Functions.cpp

//Struct TransferData Member Definition
struct GestureTransferData
{
	uint8_t RegisterAddress;
	uint8_t WData[2];
	uint8_t RData[6];
	uint8_t length;
	uint8_t Slave_Address;
	uint8_t Select_I2C_Bus;
}; //Struct variables will be declared separately in Sensor API and I2C_Functions.cpp

//Function Prototypes For I2C_Functions.cpp
int ReadI2C_Bus(struct TransferData *Data);
int WriteI2C_Bus(struct TransferData *Data);
int ReadI2C_Bus_Gesture_Mode(struct GestureTransferData *Data);


